<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use App\Models\Admin\User;
use Validator;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Crypt;
class LoginController extends Controller
{
    /**
     * 返回后台登录页面
     * @param
     *
     * @return 登录视图
     * @author   <[email zhengpeng@qq.com]>
     * @date 2017/19/11
     */
    public function login()
    {
        //
        return view('admin.login.login');
    }

    /**
     *  处理登录页面
     *  @param [Request] $[request] 
     *  @return 成功跳到后台首页 失败跳回登录
     *  
     */
    public function doLogin(Request $request)
    {
        //接受登录的值 entire
      $entire = $request -> except('_token');
      //表单验证
       $rule = [
            'username' => 'required|regex:/^[a-zA-Z0-9_]{6,18}$/',
            'password' => 'required|regex:/^[a-zA-Z0-9_]{6,18}$/',
        ];
        //表单验证错误信息提示
        $msg = [
            'username.required'=>'必须输入用户名',
            'username.regex'=>'用户名填写格式不规范',
            'password.required'=>'必须输入密码',
            'password.regex'=>'密码格式不规范'
        ];
        // validator::make() 处理错误消息
       $validator = Validator::make($entire,$rule,$msg);
       //如果请求没有通过验证，则可以使用 withErrors 方法把错误消息闪存到 session。在进行重定向之后，$errors 变量可以在视图中自动共用，让你可以轻松地显示这些消息并返回给用户
       
        if ($validator->fails()) {
            return redirect('admin/login')
                        ->withErrors($validator)
                        ->withInput();
        }
        //判断用户是否验证成功
        $user = User::where('username',$entire['username'])->first();
        if(!$user){
            return back()->with('errors','用户名错误')->withInput();
        }
        //判断密码是否正确
        //encrypt 加密  decrypt 解密   
        if(Crypt::decrypt($user['password']) != $entire['password']){
            return back()->with('errors','密码错误')->withInput();
        }
       
       //验证成功 添加session
        session(['user'=>$user]);   
        return redirect('admin/index');
    }

   
}
